二进制形式特殊的数
a&(a-1):去掉a的二进制表示的最后一个1之后得到的数,如果是2的n次幂则得到的会是0
0xaaaaaaaa = 10101010101010101010101010101010 (偶数位为1,奇数位为0)
0x55555555 = 1010101010101010101010101010101 (偶数位为0,奇数位为1)
0x33333333 = 110011001100110011001100110011 (1和0每隔两位交替出现)
0xcccccccc = 11001100110011001100110011001100 (0和1每隔两位交替出现)
0x0f0f0f0f = 00001111000011110000111100001111 (1和0每隔四位交替出现)
0xf0f0f0f0 = 11110000111100001111000011110000 (0和1每隔四位交替出现)
CRM调用外部接口
CRM调用外部接口获取数据调用接口方法123456789101112131415161718192021222324using (var client = new WebClient()) { //起重在线接口地址 //string url = "http://www.qizhong.online"; string url = "http://test.qizhong.online"; client.Encoding = Encoding.UTF8; //拼接请求的URL string serviceAddress = url + "/ec/sysConnect/doGetDataByCouponNo.do?couponNo=" ...
调用钉钉接口发送工作通知
工作通知消息是以某个微应用的名义推送到员工的工作通知消息,例如生日祝福、入职提醒等。
发送工作通知消息需要注意以下事项:
同一个应用相同消息的内容同一个用户一天只能接收一次。
同一个应用给同一个用户发送消息,企业内部应用一天不得超过500次。
通过设置to_all_user参数全员推送消息,一天最多3次。
超出以上限制次数后,接口返回成功,但用户无法接收到。详细的限制说明,请参考工作通知消息限制。
该接口是异步发送消息,接口返回成功并不表示用户一定会收到消息,需要通过获取工作通知消息的发送结果接口查询是否给用户发送成功。
消息类型和样例可参考消息类型与数据格式。
先获取token
再根据token和用户的手机号获取钉钉的userid
根据token和用户的userid发送消息
具体代码如下
代码中的*****要自己填
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676 ...
解决NavicatPremium连接SQLServer出现未发现数据源名称并且未指定默认驱动
报错:[navicat premium] [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
进入Navicat的安装目录,找到下边的文件,点击安装,重新打开数据库即可.
Java中a=a++的问题
int a=0;a=a++;生成的字节码是:
0 iconst_0 —–0压入栈顶
1 istore_1 [a] —–栈顶值(0)存入局部变量1(a)
2 iload_1 [a] —–变量1的值压入栈顶(值为0)(a++效果)
3 iinc 1 1 [a] —–变量1自加(a++操作,自加后变量1的值为1)
6 istore_1 [a] —–将栈顶值(0)存入变量1(=操作)
a的值依次变化为:0->1->0
运算符的优先级中++和–仅次于(),而a++正常的逻辑是++在下一行才会生效,但这里使用的是同一个变量,所以这里是先把右边运算的结果(也就是a的原始值0)压入栈,然后再去计算a++,由于=的优先级是最低的,所以最后再将运算过的值赋值给左边的a
int a=0;a=++a;生成的字节码是:
0 iconst_0 —–0压入栈顶
1 istore_1 [a] —–栈顶值(0)存入局部变量1(a)
2 iinc 1 1 [a] —–变量1自加(++a操作,自加后变量1的值为1)
5 iload_1 [a] —–变量1的值压入栈顶(值为1)(++a效果)
6 istore_1 ...
Java位运算
位运算符
符号
描述
运算规则
&
与
两个位都为1时,结果才为1
|
或
两个位都为0时,结果才为0
^
异或
两个位相同为0,不同为1
~
取反
0变1,1变0
<<
左移
各二进位全部左移若干位,高位丢弃,低位补0.相当于乘2
>>
右移
各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
位运算符常用方式用位运算做加法123456789101112131415//step1:异或查看两个数进行加法操作后的结果//step2:与运算计算出想对应的位置的进位结果,然后左移一位//b代表的是两数相加是否有进位,有的话就继续,没有的话就结束得出相加后的答案public class Solution{ public int Add(int a,int b){ while(b != 0){ int temp = a ^ b;//计算出相对应的位置相加后的结果 ...
Java类型转换
Java一共有八种基本数据类型
整数类型
1字节:byte
表数范围为-128(-27)~127(27-1)
2字节:short
-32768(-215)~32767 (215-1)(大约为32万)
4字节:int
-2147483648(-231)~2147483647(231-1)(大约为21亿)
8字节:long
-263~263-1
字符类型
2字节:char
浮点类型
4字节:float
8字节:double
布尔类型
boolean
自动类型转换Java的所有字符型变量可以相互转换,如果系统支持把某种类型的变量直接赋值给另一种基本类型的变量,这种方式称为自动类型转换.当把一个表数范围小的数值或变量直接赋值给另一个表数范围大的变量时,系统可以进行自动类型转换;否则就需要强制转换.
支持自动类型转换的类型为:byte→short→int→long→float→double和char→int→long→float→double
字符串和任何基本类型的值进行连接运算时,基本类型的值都会自动转化为字符串类型
强制类型转换当需要把箭头右边的类型转换为 ...
Python处理Excel文件
做了一个从Excel中筛选需要的列和行;并根据内容不同放到不同的Excel中的程序
导入需要的包123456789import sysimport xlrdimport xlwtfrom datetime import datetimefrom xlrd import xldate_as_tupleimport tkinterimport osfrom tkinter import filedialogfrom tkinter import messagebox
选取Excel文件并获取文件名和文件路径123456from tkinter import filedialogtkinter.Tk().withdraw() # 使用tk选择文件时会出现一个框框,不影响使用但会看着很难受,所以将Tkinter.Tk()实例隐藏Filepath = filedialog.askopenfilename(title=u'选择文件')#获取文件路径并将选择框标题设置为选择文件Filename = os.path.basename(Filepath)#根据文件路径获取文件名, ...
服务器添加EOS的workspace功能
1.复制文件到服务器将Windows下边的workspace文件夹拷贝到服务器tomcat目录下的webapps文件夹中 ,workspace文件夹为EOS安装路径下的\apache-tomcat-7.0.54\webapps\workspace
2.修改配置文件这个时候就可以访问登录界面但实际无法登录,需要修改xml文件中的IP地址的端口号
修改uddi-address.xml文件中的内容,文件地址为服务器tomcat安装目录下的apache-tomcat-7.0.54/webapps/workspace/WEB-INF/classes/uddi-address.xml
12345678910111213<uddi__address id="default"> <name>localserver</name> <logicName>default</logicName> <type>remote</type> <description>uddi- ...
将Java程序打包为exe文件并和jre一起打包为安装包
1.将Java程序导出的jar文件打包为exe文件1.1打开安装好的exe4j软件,首先看到的是一个欢迎界面,直接【next】就可以了
1.2在第二步中我们选择【JAR in EXE mode】,然后【next】
1.3.第三步中需要输入程序的缩写名字和指明输出目录,就是程序的保存目录,按照自己的情况设置就行,没啥特别要求,然后【next】
1.4.需要指定程序的名字,设置程序的图标,注意,程序图标要用ico格式的图片
1.5.然后我们在左边的菜单栏中选择【32 bit or 64 bit】,勾上【Generate 64 bit executeable】,不勾选为32位,勾选为64位
1.6.添加我们的jar包,点击右边绿色的 “+”号,然后选择【Archive】,打开浏览目录,找到我们的jar包,然后选择【打开】,【ok】
1.7.然后选择主类,在Main class后面,选择【浏览】,找到主类,添加上主类,然后【next】
1.8.设置JRE的最小最高版本,我们根据自己的情况设置,小版本设置成1.5,大版本设置成1.8,就行
1.9.然后点击 ...








