
Java
Ranger1993
这个作者很懒,什么都没留下…
展开
-
微信现金红包开发(java)
最近在开发微信红包,和网友分享下。主要有两个注意点:1. 请求发送微信红包的请求为ssl请求, 因此不能用普通的post请求开发。2. 生成签名需要将所传的参数全部提交用来生成签名, 否则签名失败, 当然需要主要大小写, 以及Assic排序, 因为生成的签名是MD5加密的。贴上关键代码@Override public String createS原创 2016-01-04 16:46:02 · 1452 阅读 · 0 评论 -
线程利用管道字节(字符)流进行通信
package ThreadStreamChar;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedReader;import java.io.PipedWriter;public class ThreadInputStream extends Thread{ priva原创 2016-07-07 15:41:39 · 441 阅读 · 0 评论 -
史上最简单的单例模式详解
单例模式:只给外界提供一次资源,优点两个。 1. 效率高 2. 有安全保障单例模式有两种分别为懒汉式和饿汉式懒汉式public class LazyMethod {private LazyMethod() {}static LazyMethod result;public static LazyMethod getInstance(){if(原创 2016-08-01 10:39:19 · 538 阅读 · 0 评论 -
史上最简单的工厂模式详解
工厂模式是初学者比较费解的模式之一,首先讲讲什么情景下需要工厂模式1. 当你的系统工程量达到一定级别,需要new很多相似类的时候,你需要考虑此事是否需要借助工厂模式。2. 类改名字或者更改其构造函数参数是很常见的,当系统特别庞大时,这项工程会让人欲哭无泪。工厂模式一般有两种实现方式: 简单工厂 和 工厂方法简单工厂是由3个要素构成: 1 抽象产品角色 2. 具体产品原创 2016-08-01 15:47:27 · 329 阅读 · 0 评论 -
史上最简单的代理模式详解
代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。由三大要素构成: 接口:声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色,定义真实角原创 2016-08-01 17:30:01 · 908 阅读 · 0 评论 -
史上最简单的策略模式详解
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式中需要三个角色:—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。public interface IStrategry {public void shiFang();}—具体策略角色:包装了相关的算法和行为。原创 2016-08-02 14:23:14 · 532 阅读 · 0 评论 -
史上最简单的外观模式详解
外观模式(Fascade)是平时最为常见的设计模设计之一, 主要担任服务员的功能。外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。package FascadePattern2;public class Fascade { System1 s1 = new System1(); System2 s2原创 2016-08-02 16:14:44 · 1063 阅读 · 0 评论 -
java中的动态代理
package DynamicProxy;public interface IUserDao { public void judge(String userId);}package DynamicProxy;public class UserDaoImpl implements IUserDao{ public UserDaoImpl() { } @Override原创 2016-09-08 11:15:48 · 360 阅读 · 0 评论 -
《大话设计模式》26种设计模式Java代码整理(全)
26种设计模式大全(含java代码)/** * 适配器模式 * 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。 * 一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 * */ /** * 桥接模式 * 在软件系统中,某些类型由于自身原创 2017-02-03 15:22:57 · 17106 阅读 · 3 评论 -
阿里巴巴 Java 开发手册(笔记)
【命名规约】抽象类命名使用Abstract或者Base开头测试类名使用Test结尾如果使用到了设计模式,在类名中体现具体的模式 OrderFactory LonginProxy【常量定义】long类型的初始赋值必须使用大写的L使用专门的类来维护常量ConfigConsts包装类全部使用equals判断所有P0JO类属性必须使用包装数据类型.定义POJO时原创 2017-04-27 13:34:18 · 940 阅读 · 0 评论 -
突破程序猿基本课(笔记)
第一课: 数组与内存控制1、数组的初始化有两种方式 静态和动态2、Java的数组是静态的 JS的数组是动态的3、java数组变量是引用型变量,并不是数组对象本身,只要让数组变量指向有效的数组对象即可。4、所有局部变量都是放在栈内存中、不管是基本变量还是引用类型变量 都存在在各自的栈区,但引用类型变量所引用的对象(数组和普通的java对象) 则总是存储在堆内原创 2017-06-07 17:18:49 · 429 阅读 · 0 评论 -
多线程之多消费者与生产者
package PAndCList;public class C { private Service service; public void eat(Service service) throws InterruptedException{ synchronized (service) { while(Service.list.size()==0){ System原创 2016-07-07 10:35:07 · 304 阅读 · 0 评论 -
多线程经典之生产者与消费者
package PAndC;public class C { private Service service; public void eat(Service service) throws InterruptedException{ synchronized (service) { if(Service.restoreValue.equals("")){ s原创 2016-07-06 10:02:30 · 335 阅读 · 0 评论 -
利用反射导入导出Excel
反射是java中常见的技术,主要用于过去类中的field, method等。User.javapackage com.augmentum.bean;import java.util.Date;public class User { private int id; private int age; private String name; private Date bi原创 2015-12-03 09:09:35 · 929 阅读 · 1 评论 -
微信企业号如何在十分钟内发送一万个红包
最近接到的项目是在公司年会将有一个摇红包的环节,公司共有一千人,每人可以领取十个红包。这对于程序来说是一个不小的压力吧,活动已经结束,效果很好。下面我来分享下我们Java后端采用的基本设计。总体设计思路是: 多线程 + 并发队列 + 数据库(尽可能与微信少交互) @WesApi @RequestMapping(value = "/pay/bonusThread", metho原创 2016-01-25 09:43:35 · 3206 阅读 · 1 评论 -
微信企业号通讯录异步更新(java)
1. 需要将批量更新的内容写入CSV文件中。 String tmpDirUser = System.getProperty("java.io.tmpdir"); String fileNameUser =MessageFormat.format(CONTACT_CSV, corpId, suiteId); logger.info(tmpDirUser + File.原创 2016-02-03 14:35:18 · 4171 阅读 · 0 评论 -
多线程中的Interrupt、Interrupted、IsInterrupted 的区分
1. Interrupt是指对该线程设置了终止状态, 并没有终止该线程。2. Interrupted是指判断当前线程是否终止了, 并且会由于interrupt设置的线程终止状态。public class MyThread extends Thread { private int count; public void run() { for (int i = 0; i <原创 2016-06-27 16:17:51 · 883 阅读 · 0 评论 -
停止线程的两种方式(异常和Return)
package ExceptionBreak2;public class TestMain { public static void main(String[] args) throws InterruptedException { MyThread mt = new MyThread(); mt.start(); Thread.sleep(200); mt.inte原创 2016-06-29 09:51:26 · 4652 阅读 · 0 评论 -
《java多线程编程核心技术》核心笔记(二)
【线程的通信】只能在同步方法或同步块中调用wait() 方法方法notify()也需要在同步方法或者同步代码块中调用notify()方法通知一个线程 notifyAll()可以使正在等待队列中等待统一共享资源的全部线程从等待状态退出,进入可运行状态。一般来说按照优先级顺序执行。wait方法执行完后是自动释放锁的。notify()方法释放锁的时间是在synch原创 2016-07-11 16:40:23 · 499 阅读 · 0 评论 -
JDK1.5之后怎么玩转多线程(Lock和Condition的使用)
在JDK1.5之前同步使用的是Synchronized的方法,而线程的通信使用的是wait、Notify、NotifyAll等方法, 那么1.5之后就可以使用新的类库 Lock、Condition来完成。使用新的类库有一个显著的优势在于: 1.5之前线程的通信的等待和提醒绑定的是对象,例如Object等。而现在可以实现不同线程绑定不同的Condition用于提醒和等待这样,工作效率会大幅增加。原创 2016-07-12 14:53:58 · 696 阅读 · 0 评论 -
Java中公平锁与非公平锁的区别
所谓公平锁指的是哪个线程先运行,那就可以先得到锁。非公平锁是不管线程是否是先运行,都是随机获得锁的。看下代码就清楚了。package FairAndUnFailLock;public class TestMain { public TestMain() { } public static void main(String[] args) { Service原创 2016-07-13 10:46:14 · 7887 阅读 · 0 评论 -
《java多线程编程核心技术》核心笔记(三) Lock的使用
【Lock】Lock lock = new ReentrantLock();lock.lock()就是持有了对象监视器 其他线程只有等待锁的释放。在使用notify()/notifyAll()方法进行通知时,被通知的线程是由JVM随机选择的,但是使用了ReentrantLock结合Condition类是可以实现"选择性通知"的, 在Condition原创 2016-07-25 16:13:05 · 493 阅读 · 0 评论 -
腾讯云部署 Springboot项目 (Nginx负载均衡+Redis集群+RabbitMQ集群+Https )
初级版目标: 输入域名通过Nginx负载均衡到两个Tomcat, 页面打印IP、端口号、Redis 信息、RabbitMQ 信息原创 2019-04-26 10:12:18 · 624 阅读 · 0 评论