扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
呵呵 这哥们是新手 从描述问题上来看就可以看出 你的意图估计是这样:
十年建站经验, 成都做网站、网站建设客户的见证与正确选择。成都创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
你想把一个类或一些类打包成jar文件,至于这个jar文件有什么api,我从你所说的连接池来看应该是创建数据库连接的一些api吧,你想把这些连接丢给连接池来管理,对吗?
首先,你封装好的创建连接的api,系统初始化时就创建一定数量的的连接。
第二,把这些连接丢给连接池。
第三,让连接池来维护你的连接,如果连接池中的连接数少于你定的阀值,就让其再调用你之前封装的api创建一些连接,再纳入连接池中。如此循环。
第四,程序要使用连接就直接从连接池中取。
// 初始化连接池
String connUrl = "jdbc:mysql://your.database.domain/yourDBname";
String driver = "com.mysql.jdbc.Driver";
private Mapjava.sql.Connection, String connectionPool = null;
private void initPool() {
try {
connectionPool = new HashMapjava.sql.Connection, String();
Class.forName(driver);
java.sql.Connection con = DriverManager.getConnection(dbUrl);
for (int poolInd = poolSize; poolInd 0; poolInd++) {
connectionPool.put(con, "AVAILABLE");
}
}
// 取连接
public java.sql.Connection getConnection() throws ClassNotFoundException, SQLException
{
boolean isConnectionAvailable = true;
for (Entryjava.sql.Connection, String entry : connectionPool.entrySet()) {
synchronized (entry) {
if (entry.getValue()=="AVAILABLE") {
entry.setValue("NOTAVAILABLE");
return (java.sql.Connection) entry.getKey();
}
isConnectionAvailable = false;
}
}
if (!isConnectionAvailable) {
Class.forName(driver);
java.sql.Connection con = DriverManager.getConnection(connUrl);
connectionPool.put(con, "NOTAVAILABLE");
return con;
}
return null;
}
// 释放连接
public void closeConnection(java.sql.Connection connection) throws ClassNotFoundException, SQLException {
for (Entryjava.sql.Connection, String entry : connectionPool.entrySet()) {
synchronized (entry) {
if (entry.getKey().equals(connection)) {
//Getting Back the conncetion to Pool
entry.setValue("AVAILABLE");
}
}
}
}
基本上连接池的实际工作原理就是这样,当然建议使用开源现成的C3P0,DBCP。
关注
从事Android开发久了不可避免的会接触对外接口的封装,下面本人就以自己写过的一个例子系统讲讲怎样对应用sdk的开发。
1.封装
我们在与其他公司合作的时候,往往会有技术方面的协作,但我们又不想过多的暴露我们某些技术方面的细节,比如:ip地址、技术参数、核心算法。
于是我们会对这部分代码进行封装,这部分需要精通Java的设计模式。
下面上传我的项目:
这里写图片描述
新建一个Android工程,添加一个Model:musicdot。
musicdot是本人自己解析百度音乐的歌曲搜索请求实现的在线搜歌功能包。所以我将要对这部分代码进行封装打包,以达到隐藏具体搜索请求的目的。(由于司准备让整个项目打包成SDK,经过大量查阅打包SDK的博客,和自己的实践,我把打包过程,中间遇到的各种问题,踩过的坑简单的总结一下,让看到的道友少踩些坑。
一、创建一个workspace
可以在桌面新建个testSDK文件夹,在这个文件夹里创建个WorkSpace。如图:
二、创建SDK
1.打开workspace,创建一个project,如图:
2.选择Cocoa Touch Framework,如图:
3.创建framework,把framework添加到workspace里。如图:
三、创建SDKDemo
1.打开TestSDK.xcworkspace文件,创建project ,选择Single View Application。如图:
2.红框里的都选择TestSDK.xcworkspace。
这样就把SDK和demo都创建好了,这样创建SDK加demo可以方便调试,如果sdk中有问题,可以直接在SDK中断点调试。创建后的效果如图:
3.修改build settings 配置参数。如图:
更改参数,在Architectures下增加armv7s,并选中。将Build Active Architecture only设置为NO
四、添加你的项目代码到SDK中
如果你的项目用到了Xib,图片,mp3,storyboard等,那么你就要添加一个bundle资源包,把这些资源添加到资源包里。
五、创建bundle资源包。
1.在target中点击右下角的+号,选择macOS,找到FrameworkLibrary,选择Bundle。如图:
2.修改配置文件:
"Base SDK" 设置为 "IOS"
"Build Active Architecture Only" 设置为 "YES"
"Debug Information Format" 设置为 "DWARF with dSYM File"
"Skip Install" 设置为 "NO"
"Strip Debug Symbols During Copy" 中"Release"模式设置为 "YES"
"IOS Deployment Target" 设置为 "IOS 9.0"(具体根据自己的项目,设置系统版本)
"COMBINE_HIDPI_IMAGES" 设置为 "NO"
3.在Build phases中添加Xib。如图:
4.选择bundle,command + B编译,如图:
编译之后,SDK工程下会多个bundle的文件夹,你可以把图片,MP3,plist文件放到该文件夹里,如图:
5.调用bundle资源包里的资源。
//调用自定义View的Xib
+(MyView *)instancePubView
{
NSArray * nibView = [[NSBundle mainBundle] loadNibNamed:@"testBL.bundle/MyView" owner:nil options:nil];
return [nibView objectAtIndex:0];
}
//调用视图控制器的Xib
-(instancetype)init{
NSBundle * bundle = [NSBundle bundleWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"testBL.bundle"]];
self = [super initWithNibName:@"LoginViewController" bundle:bundle];
return self;
如何用java开发一个sdk可以在千锋教育进行专业的学习,千锋教育是国内java开发教学的领导者,实力雄厚,放心可靠。
java开发一个sdk具体流程:
1、在Java工程中添加该SDK中dist目录下的jar库,并添加到你的编译路径中。
2、在代码中import相应的包名。
3、非web应用请修改和查阅***.java,web应用请修改config.jsp,查阅index.jsp, 获得包括oauth登录请求及其它功能请求的方法接口。
4、commons包里面的java类实现了目前腾讯微博开发平台的所有接口,除第一个参数是oauth对象外其他都和开发平台的api文档一致,类名和方法名亦和api一致:比如获取主页时间线的api是:那么此SDK的java类是:Statuses_***.java,实现方法是home_timeline(a,b,c,d...)。
5、此SDK为半原创,思路和部分方法函数参考了官方(热心网友sampan)提供的java SDK() 和网上相关的Oauth授权资料。
6、javawind-qweibo-api-1.0.jar为本sdk生成的jar,如果有修改源码,记得重新生成此jar。
想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流