- 博客(35)
- 收藏
- 关注
原创 【java】【多线程】线程安全与线程非安全【1】
线程安全与线程非安全,怎样区分呢?其实,当线程访问同一资源时,如同一个对象的同一个变量,会存在多个线程对同一资源的竞争访问,也就存在线程非安全。所以说,非安全指的是:多个线程访问同一个资源,可能会访问到非想要的资源。如线程一改写了变量a,而线程二此时又来访问变量a,则线程二得到的是修改后的变量a,而不是修改前的变量a。这样,就存在了数据的非安全访问,称之为线程非安全。这也可以称为数据的
2017-05-03 23:47:42
573
原创 Spring之利用autowire属性进行自动装配
spring的自动属性装配,其实就是说,对于bean的属性,不用使用手工显示装配,可以让spring自己通过在xml文件中按照一定的规则查找相关的符合条件的bean,装配为bean的属性。这样说起来有点绕口,直接上代码。首先,写一个辅助类。package com.cmm;public class Phone { private String brand; pri
2017-05-03 22:16:43
1648
原创 Spring之构造器配置、c空间配置
配置bean时,可以使用无参构造器加set方法配置,当然,也可以使用构造器配置,也就是使用带参数的构造器装配bean。首先,定义两个类。package com.cmm;public class Phone { private String brand; private int price; public Phone(String brand, int price) {
2017-04-27 21:44:18
869
原创 String属性配置之p空间、util空间
使用xml进行Bean的属性配置时,使用p空间更方便。xml如下:使用P空间,可以很方便的配置。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.spr
2017-04-27 21:18:32
460
1
原创 spring之属性注入
综述:属性注入,意思就是先通过类的无参构造函数构造一个对象,然后通过调用setter方法来设置对象的属性。所以,使用属性注入时,有两个前提。(一):类有无参构造器。(二):类的属性有setter方法。但是我们知道,类的属性有很多种类型,比如:基本类型(int、double)、string、集合(list、map)、其他对象的引用。接下来挨个看看这些类型在
2017-04-24 22:23:29
372
原创 Spring基础之helloworld
1、新建Helloworld类:package com.cmm;public class HelloWorld { private String name; public void setName(String name) { this.name = name; } public void say(){ System.out.println("hello:"+this.na
2017-04-23 22:28:24
229
原创 Spring之如何导入包到已有工程中
第一步:加载jar包(可以在本地目录ctrl + c,然后在选中libs目录,ctrl + v,或者libs目录上右键paste)第二步:添加jar包到build path添加jar包到libs目录下面后,选中所有的jar包,右键,build path ------> add to build path
2017-04-23 22:10:50
6724
原创 Spring 之 eclipse 提示: Failed to read schema documen“schema/beans/spring-beans.xsd”
使用eclipse自动生成spring xml时,提示:Multiple annotations found at this line:- cvc-elt.1: Cannot find the declaration of element 'beans'.- schema_reference.4: Failed to read schema document 'http://www.s
2017-04-23 21:56:51
6909
原创 Spring 之 eclipse xml自动补齐提示功能 配置
OK之后,将之前打开的xml文件关闭后再次打开,就可以实现自动提示了。图中划线的部分,包括标签、属性、以及属性值,都可以使用 alt + / 快捷方式进行自动补全。
2017-04-23 21:52:10
7785
原创 python基础之其他
1、pass语句,是空语句,只是占位使用。for ch in "Python": if ch == 'h': pass print("pass") else: print(ch)结果如下:Pytpasson仅作占位之用,意思这跳过本行,继续下一行。2、del语句,del用来删除对象的引用。a = 5
2017-04-17 23:54:55
195
原创 python基础之循环语句
1、while循环。例如:从数据中挑出奇数与偶数。datas = [1,2,3,4,5,6]odd = []even = []while len(datas) > 0: data = datas.pop() if(data % 2 == 0): even.append(data) else: odd.append(data)
2017-04-16 22:19:16
327
原创 python基础之运算符
1、算术运算符。python中,有两个特殊的运算符。一个是求幂,一个是求除法的结果的整数部分。a = 10b = 20print(a/b) #算术除法print(a//b) #返回除法结果的正数部分print(a**b)print(3//2)结果如下:0.5010000000000000000000012、比较运算符,比较的是对象实际存储的值,
2017-04-16 22:03:14
569
原创 python之一五大基本类型(数字、字符串、列表、元组、字典)
第一题:找出所有的三位数,要求:个位、十位、百位数据不重复。for i in range(1,10): for j in range(0,10): for k in range(0,10): if( i != j) and ( j !=k ) and ( i!=k ): print(i*100 + j*10 + k
2017-04-16 21:22:42
463
原创 Spring AOP之通过注解编写AOP
下面展示通过注解编写aop。package com.bean.AOP2;public interface IEat { public void eat();}package com.bean.AOP2;public class Eat implements IEat { @Override public void eat(){ for(int i=0;i<1e4;i++);
2016-05-03 11:20:28
327
原创 Spring AOP之通过xml定义aop
定义aop的方法,有两种,可以通过xml来定义,也可以通过注解。首先,来看看通过xml如何定义aop。AOP中,最重要的为理解切面(aspect)、切点(pointcut)、通知(advice)三个概念。简单理解:切面,也是一个类对象,这个类的功能一般为:安全管理、账号登录等。也就是说,这些类的功能很关键,在整个程序的各个地方可能都用的到,但是,他们的功能独立,与程序的耦合度应该降低到最小
2016-05-03 10:53:30
359
原创 Spring之集合DI
如果一个类的成员变量为集合类型,而且这些集合需要外部提供,则需要进行DI处理,但是,集合的DI,只能通过setter注入,所以,意味着必须有默认构造函数或者存在构造函数DI。四大集合的代码如下:package com.bean.DI2;import java.util.List;public class ListDI { private List list; public List
2016-05-02 19:57:13
286
原创 Spring之DI简述
Spring的依赖注入原理,我的理解为:在xml配置文件中,“构造”对象。用引号的原因在于,在这里并不是真正的构造。只有当我们通过ApplicationContext来加载xxx.xml文件时,这些类的对象才会被真正构造。然而,如何构造呢?简单的来说,Spring通过调用类的构造函数进行构造。构造函数大体分两种:默认构造函数与带参数的构造函数。也就是说,Spring中通过依赖注入来构建对象的最
2016-05-02 11:39:36
858
原创 java继承中的this用法
先看代码Parent.javapackage this_test;public class Parent { public int i; public void print(){ System.out.println("parent"); } public void my_print(){ this.print(); //区别 System.out.println
2016-03-17 23:31:53
3653
原创 Java I/O之各个类的作用
public class Basic {/*** BufferedInputStream 将内存中的一个缓冲区作为InputStream来使用* BufferedOutputStream 将内存中的一个缓冲区作为OutputStream来使用*//*** FileInputStream 将文件作为InputStream,以字节的形式从文件中读出数据* FileO
2016-03-05 14:51:04
628
原创 Java多线程之停止一个线程
注:本文主要参考《Java多线程编程核心技术》高洪岩方法一:利用MyThread.interrupt()与breakpublic class MyThread extends Thread{@Overridepublic void run() {for(int i=0;iif(this.interrupted()){System.out.prin
2016-02-29 21:46:44
558
3
原创 Android UI之switch的thumb与track属性定制自己的switch
利用官方的switch控件的thumb与track属性,可以自定义自己的switch,实例如下:上面的switch是官方默认的形状,下面的是通过设定自定义的thumb与track来实现的效果。那如何来实现呢?1.thumb比较好实现,利用XML来定义一个drawable文件,命名为switch_thumbxml version="1.0" enc
2016-02-27 21:16:04
20689
2
原创 用指针正确的操纵动态数组与正确用delete释放内存的方法
#include#includeusing namespace std;void f(int *i_ptr,size_t n){ assert(n>0); for(int i=0;in;++i) *(i_ptr++)=i;}int main(){ size_t array_siz
2015-08-18 23:11:15
1506
原创 c++左值引用作为函数形参时的注意要点
#includeusing namespace std;void f(int i){ i += 5;}void ref_f(int &i){ i += 5; cout }void ref_swap(int &a, int &b){ int temp = a; a = b; b = temp;
2015-08-16 08:19:22
822
原创 2015华为软件精英挑战赛德州扑克之后期策略
其实,后期策略有很多麻烦的问题。其中之一就是依据蒙特卡洛方法模拟出来的胜率,我们对其进行分段处理时,会有不连续的问题。后来我们采取数学建模的方法,化离散为连续,解觉了这个问题下面代码,仅供纪念与参考void flopraise00strategy(double weight){ if (callmoney == 0) snprintf(reg_msg, si
2015-08-16 00:32:57
1354
原创 2015华为软件精英挑战赛德州扑克之蒙特卡洛法模拟胜率
由于比赛500ms的时间限制,想要知道自己的牌力胜率是多大,我们采取了蒙特卡洛法,模拟对手的手牌,计算自己的胜率,依据胜率作出决策经过几次改进,该模拟算法可以在500ms以内完成,从而可以保证不超时void sortCards(card mcard[], int num){ int temp = 0,temp2; for (int i = 0; i fo
2015-08-16 00:24:59
2366
原创 2015华为软件精英挑战赛之手牌策略
ps:这不是决赛的版本,部分参数和决赛不一样,但基本差不多(决赛的版本不见了)//>4人void HoldAISeatNumberMore5(int mHoldWeight){ int mrasiepeople = getRaisePeopleNumber(); if (myPosition == 1) { if (HoldWheel
2015-08-16 00:18:04
716
原创 2015华为软件精英挑战赛德州扑克之手牌处理
依据德州扑克规则,每人先发两张手牌,我们依据网上对手牌牌力的分析表格, 采取遍历的方法,计算出手牌的牌力int myTwoCardWeight(card mtwocard[]){ if (mtwocard[0].point == mtwocard[1].point) { switch (mtwocard[0].point) {
2015-08-16 00:11:17
1134
原创 Qt5之扩展对话框与在QLabel中显示中文的办法
//mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include#include#include#include#include#include#include#includeclass MainWindow : public QDialog{ Q_OBJECTpubl
2014-12-02 12:24:34
5236
原创 函数指针做形参
#includeusing namespace std;void f(){cout}int main(){void print_(void (*p)());print_(f);}void print_(void (*p)()){(*p)(); //注意这里}
2014-10-09 23:05:06
345
原创 借用指针输出二维数组
#includeusing namespace std;int main(){int am[2][2]={{1,2},{5,6}};for(int i=0;i for(int j=0;j cout}
2014-10-09 22:54:19
437
原创 将n个整数前面的数据后移m位
#includeusing namespace std;int main(){void my_swap(int &a,int &b);int my_array[10];coutfor(int i=0;icin>>my_array[i];coutint temp;for(int i=0;i{my_swap(my_array[i],my_array[
2014-10-09 22:43:35
655
原创 一个函数作为另一个函数的实参
#includeusing namespace std;int main(){int max1(int i,int j);//函数声明cout}//函数实现int max1(int i,int j){return i>j?i:j;}结果为:9
2014-10-08 22:55:12
516
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人