java小程序(3)

2023-05-16

【文章标题】java小程序(3

【文章作者】曾健生

【作者邮箱】zengjiansheng1@126.com

【作者QQ190678908

【作者声明】本人水平有限,失误之处,敬请各位指出。本人以前写的一些小程序,分享一下希望对各位学习java有帮助 ^-^

*******************************************************************************

题目:

 

 

/*====第十七题==================================

客户端向服务端上传图片。将客户端封装成线程。

*/

 

/*====第十八题==================================

java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。

但对应的字节数不同,一个汉字占两个字节。

定义一个方法,按照最大的字节数来取子串。

如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,

那么半个就要舍弃。如果去四个字节就是“ab你”,取五个字节还是“ab你”.

*/

 

/*====第二十题==================================

将一个图片切割成多个文件。在将多个文件合并成该图片

 

 

/*====第二十一题==================================

编写一个方法。去除Vector集合中的重复元素。

*/

 

/*====第二十二题==================================

取出一个字符串中字母出现的次数。如:"abcdekka27qoq"  a(2)b(1)k(2)...

*/

 

 

 

 

 

 

/*====第十七题==================================

客户端向服务端上传图片。将客户端封装成线程。

*/

 

import java.net.*;

import java.io.*;

 

//服务端程序

class ServerJpg

{

       public static void main( String args[] ) throws Exception

       {

              ServerSocket ser =new ServerSocket( 9999 );

              Socket s=ser.accept();

              InputStream in=s.getInputStream();

              byte buf[]=new byte[1024];

              int num=0;

              //写入到一个JPG文件中

              FileOutputStream fis=new FileOutputStream( "2.jpg" );

              while( ( num=in.read(buf) )!=-1 )

              {

                     fis.write( buf, 0, num );

              }

              s.close();

              ser.close();

              in.close();

              fis.close();

       }

}

 

//客户端程序,封装成一个线程

class clientJpg implements Runnable

{

       public void run()

       {

              Socket s=null;

              OutputStream os=null;

              FileInputStream fis=null;

              try

              {

                     s=new Socket( "10.1.15.124", 9999 );

                     os=s.getOutputStream();

                     fis=new FileInputStream( "1.jpg" );

                     byte buf[]=new byte[1024];

                     int num=0;

                     while( (num=fis.read(buf))!=-1 )

                     {

                            os.write( buf,0, num );

                     }

              }

              catch( Exception e )

              {

                     e.printStackTrace();

              }

              finally

              {

                     try

                     {

                            s.shutdownInput();

                            os.close();

                            fis.close();

                     }

                     catch( Exception e )

                     {

                            e.printStackTrace();

                     }

              }

       }

}

 

class Demo

{

       public static void main(String args[])

       {

              new Thread( new clientJpg()).start();

       }

}

 

 

/*====第十八题==================================

java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。

但对应的字节数不同,一个汉字占两个字节。

定义一个方法,按照最大的字节数来取子串。

如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,

那么半个就要舍弃。如果去四个字节就是“ab你”,取五个字节还是“ab你”.

 

思路:

首先要知道汉字是由连个字节所组成。而且这两个都是负数。

1,先将该字符串变成字节数组(getBytes

2,通过要截取的长度位。来判断该位置是正数还是负数。

       只要为负数。就往回判断前一个字节是正还是负。以此类推。

       定义一个计数器,记录负数出现的次数。如果该数为偶数。那么就将要去长度的字节数。转成字符串(说明没有半个汉字存在。)

       如果是奇数。就将最后一个字节舍弃。在转成字符串。

*/

 

import java.io.*;

 

class Demo

{

       public static void main(String args[])

       {

              byte buf[]="ab你好".getBytes();

              int num=0;//记录是第几个数字

              int count=0;    //记录负数的个数

             

              try

              {

                     BufferedReader br=new BufferedReader(

                            new InputStreamReader(System.in));

                    

                     num=Integer.parseInt( br.readLine() );

              }

              catch( Exception e )

              {

                     e.printStackTrace();

                     System.out.println( "输入有误" );

                     return;                  

              }

             

              for(int i=0; i<num-1; i++ )

              {

                     if( buf[i]<0 )

                     {

                            count++;

                     }

              }

             

              if( count%2==0 )

              {

                     System.out.println( num );

                     System.out.println( new String( buf,0, num-1 ));

              }           

              else

              {

                     System.out.println( num );

                     System.out.println( new String( buf,0, num ));

              }

       }

      

 

}

 

 

 

/*====第十九题==================================

利用LinkedList去实现一个队列的效果.

自定该功能类.(队列的特点是元素先进先出,去查看LinkList中的方法)

*/

class DuiLie<T>

{

       private LinkedList<T> ll;

       DuiLie()

       {

              ll = new LinkedList<T>();

       }

       public void myAdd(T t)

       {

              ll.addFirst(t);

       }

       public T myGet()

       {

              return ll.removeLast();

       }

       public boolean isNull()

       {

              return ll.isEmpty();

       }

}

 

class TD

{

       public static  void main(String[] args)

       {

              DuiLie dl = new DuiLie();

              dl.myAdd("hahah");

              dl.myAdd("kkkk");

              dl.myAdd("qqq");

              while(dl.isNull())

              {

                     System.out.println(dl.myGet());

              }

       }

}

/*====第二十题==================================

 

 

将一个图片切割成多个文件。在将多个文件合并成该图片

 

 

1,通过字节流读取该图片。定义一个缓冲区数组该数组的大小 是要生成的切割后的文件大小。

通过输出流将该数组中的数据,写到一个文件中(文件名要有规律。1.haha  2.haha...

(可以通过一个自定义配置文件保存原文件的基本属性信息。如:源文件的名字 已经切割出来的碎片文件的个数。方便合并。)

 

2,合并,首先要知道碎片文件的目录,列出该目录当前的所有.haha文件。(遍历时可以通过配置文件中的信息确定循环的次数。)

并按照顺序把每一个碎片文件用流读取。(一个文件对应一个流。)

将这些流存入集合。(why?因为要通过序列流进行合并。(SequenceInputStream)该流会接受一个Enumeration

 

3,读取序列流中的数据,并把该数据都写入到一个(图片)文件中。

*/

 

import java.io.*;

 

/*文件分割类,

1.通过流的形式读取源数据

2.通过定义一个固定的字节数组,实现文件分割

  a,用FileInputStream读取源文件

  b,通过一个字节数组作为中介存储

  c,把读取到的数据写入到一个新文件

3.把原来的文件名和分割的个数写入到一个配置文件中

*/

 

import java.io.*;

 

/*文件分割类,

1.通过流的形式读取源数据

2.通过定义一个固定的字节数组,实现文件分割

  a,用FileInputStream读取源文件

  b,通过一个字节数组作为中介存储

  c,把读取到的数据写入到一个新文件

3.把原来的文件名和分割的个数写入到一个配置文件中

*/

import java.io.*;

 

/*文件分割类,

1.通过流的形式读取源数据

2.通过定义一个固定的字节数组,实现文件分割

  a,用FileInputStream读取源文件

  b,通过一个字节数组作为中介存储

  c,把读取到的数据写入到一个新文件

3.把原来的文件名和分割的个数写入到一个配置文件中

*/

 

import java.io.*;

import java.util.*;

 

/*文件分割类,

1.通过流的形式读取源数据

2.通过定义一个固定的字节数组,实现文件分割

  a,用FileInputStream读取源文件

  b,通过一个字节数组作为中介存储

  c,把读取到的数据写入到一个新文件

3.把原来的文件名和分割的个数写入到一个配置文件中

*/

class FileSplit

{

       private File f;

       private FileInputStream fis;

       private FileOutputStream fos;

       private String fileName;

       int count;

      

       //传入要分割的文件路径

       FileSplit( String s )

       {

              f=new File( s );

              fileName=s;

              count=0;

       }

      

       public void split()

       {

              try

              {                  

                     fis=new FileInputStream( f );

                     byte buf[]=new byte[1024*256];

                     int num=0;

                     while( ( num=fis.read( buf ) )!=-1 )

                     {

                            //创建一个临时的分割文件对象

                            if( createSplitFile( buf, 0, num )==-1 )

                            {

                                   return;

                            }

                            count++;                                                        

                     }                                                     

              }

              catch( IOException e )

              {

                     e.printStackTrace();

              }

              finally

              {

                     //关闭输入流

                     if( fis!=null )

                     {

                            try

                            {

                                   fis.close();

                            }

                            catch( IOException e )

                            {

                                   e.printStackTrace();

                            }

                     }

              }

             

              //创建配置文件“file.ini”,其中格式为“文件个数>文件名”

              createInfoFile();

             

              System.out.println( "文件分割成功" );

       }

      

       创建一个临时的分割文件对象,如果返回-1表示创建失败,

       //程序退出

       private int createSplitFile( byte buf[],int zero,int num )

       {

              //创建临时的文件对象

              FileOutputStream fosTemp=null;

              try

              {

                     fosTemp=new FileOutputStream( count+".haha" );

                     fosTemp.write( buf,zero,num );

                     fosTemp.flush();

              }

              catch( IOException e )

              {

                     System.out.println( "文件"+count+".haha创建失败" );

                     return -1;

              }

              finally

              {

                     //关闭输出流

                     try

                     {

                            fosTemp.close();

                     }

                     catch( IOException e )

                     {

                            e.printStackTrace();

                     }

              }

              return 1;        

       }

      

       //创建配置文件“file.ini”,其中格式为“文件个数>文件名”

       private void createInfoFile()

       {

              File infoFile=new File( "file.ini" );

              BufferedWriter br=null;

              try

              {

                     //如果文件不存在就创建一个新的的文件

                     if( !infoFile.exists() )

                     {

                            infoFile.createNewFile();

                     }

             

                     br=new BufferedWriter(

                            new FileWriter(infoFile) );

                     br.write( count+">"+fileName );

                     br.newLine();

                     br.flush();

              }

              catch( IOException e )

              {

                     e.printStackTrace();

              }

              finally

              {

                     if( br!=null )

                     {

                            try

                            {

                                   br.close();

                            }

                            catch( IOException e )

                            {

                                   e.printStackTrace();

                            }

                     }

              }

       }

      

}

 

/*

文件合并类

1.通过枚举获取配置文件对象

2.通过输入流获取文件个数和源文件名称

3.把各个文件对象存放在序列流中

4.把通过序列流合并成一个文件

*/

class FileMerge

{

       File fileDir; //配置文件目录

      

       FileMerge( String s )

       {

              this.fileDir=new File( s );

       }

      

      

       public void startMerge()

       {

              //获取配置文件对象

              File f=getFile( fileDir );

             

              //获取文件的配置信息

              String fileInfo=getFileInfo( f );

             

              //获取文件的个数

              int count=getFileCount( fileInfo );

             

              //获取分割前的文件名

              String fileName=getFileName( fileInfo );

             

              //获取枚举集合

              Vector<FileInputStream> v=getAllFile( count );

             

              //如果集合不为空就合并文件

              if( v!=null  )

              {

                     merge( v,fileName );

              }

       }

      

       //获取配置文件对象

       private File getFile( File fileDir )

       {

              File fileList[]=fileDir.listFiles();

              for( int i=0; i<fileList.length; i++ )

              {

                     if( fileList[i].getName().equals("file.ini"))

                     {

                            return fileList[i];

                     }

              }

              return null;

       }

      

       //获取文件的配置信息

       private String getFileInfo( File f )

       {

             BufferedReader br=null;

             String s=null;

            

             try

             {

                    //读取配置信息

                    br=new BufferedReader( new FileReader( f ) );

                    s=br.readLine();

             }

             catch( IOException e )

             {

                    System.out.println( "读取配置文件失败" );

                    e.printStackTrace();

             }

             finally

             {

                    //关闭输入流

                    if( br!=null )

                    {

                           try

                           {

                                  br.close();

                           }

                           catch( IOException e )

                           {

                                  e.printStackTrace();

                           }

                    }

             }

            

             return s;

       }

      

       //获取文件的个数

       private int getFileCount( String fileInfo )

       {

              String num=null;

              if( fileInfo!=null )

              {

                     num=fileInfo.substring( 0,fileInfo.indexOf('>') );

              }

             

              return Integer.parseInt(num) ;

       }

             

       //获取分割前的文件名

       private String getFileName( String fileInfo )

       {

              String fileName=null;

              if( fileInfo!=null )

              {

                     fileName=fileInfo.substring( fileInfo.indexOf('>')+1 );

              }

             

              return fileName;

       }    

      

       //获取枚举集合

       private     Vector<FileInputStream> getAllFile( int count )

       {

              Vector<FileInputStream> v=new Vector<FileInputStream>();

              for( int i=0; i<count; i++ )

              {

                     File f=null;

                     try

                     {

                            f=new File( fileDir, i+".haha" );

                            if( !f.exists() )

                            {

                                   System.out.println( i+".haha文件不存在,合并失败" );

                                   return null;

                            }

                            v.add(new FileInputStream( f ));

                     }

                     catch( IOException e )

                     {

                            e.printStackTrace();

                     }

                    

                    

              }

              return v;

       }

      

       //用序列流合并文件

       //V为枚举接口,count为文件数

       private void merge( Vector<FileInputStream> v ,String fileName )

       {

              Enumeration<FileInputStream> e=v.elements();

              SequenceInputStream sis=new SequenceInputStream(e);

              FileOutputStream fos=null;

              byte buf[]=new byte[1024];

             

              try

              {

                     //输出到文件fileName

                     fos=new FileOutputStream( fileName );

                     int num=0;

                    

                     //读取文件的内容

                     while( (num=sis.read(buf))!=-1 )

                     {

                            fos.write( buf,0,num );

                            fos.flush();

                     }

              }

              catch( IOException e1 )

              {

                     e1.printStackTrace();

              }

              finally

              {

                     //关闭流

                     try

                     {

                            sis.close();

                            fos.close();

                     }

                     catch( IOException e1 )

                     {

                            e1.printStackTrace();

                     }

              }

             

       }

             

}

 

class Demo

{

       public static void main(String arsg[])

       {

              //分割文件

              new FileSplit( "1.bmp" ).split();

             

              //合并文件

              new FileMerge( "e://test" ).startMerge();

       }

}

 

 

/*====第二十一题==================================

编写一个方法。去除Vector集合中的重复元素。

思路:

1,自定义一个Vector集合。对原有的Vector集合进行迭代。

把迭代出来的元素存入到新集合中。在存的时候进行判断新的集合中是否有该元素。‘

如果有,就不要进行存储。

迭代完成 。新的Vector集合中就不存在重复元素了。

*/

 

import java.util.*;

class Demo

{

       public static void main( String args[] )

       {

              Vector<Integer> v=new Vector<Integer>();

              Vector<Integer> ve=new Vector<Integer>();

              int num=0;

              v.add( 45 );

              v.add( 45 );

              v.add( 46 );

              v.add( 49 );

             

              Enumeration<Integer> e=v.elements();

              while( e.hasMoreElements() )

              {

                     num=e.nextElement();

                     if( !( ve.contains( num )) )

                     {

                            ve.add( num );

                     }

              }

             

              Enumeration<Integer> e1=ve.elements();

              while( e1.hasMoreElements() )

              {

                     System.out.println( e1.nextElement() );

              }

             

             

       }

}

 

 

/*====第二十二题==================================

取出一个字符串中字母出现的次数。如:"abcdekka27qoq"  a(2)b(1)k(2)...

思路:

1,先将字符串转换成字符数组。

2,定义一个计数器,记录每一个字母出现的次数。

3,将字母作为key。该字母出现的次数作为value。将两者存入map集合中。

(为什么要用map集合呢?因为字母有很多,数据多了就要想到用容器多存入。方便操作。而每一个字母都有对应的次数。正好有映射关系。而map集合正好符合这个特点。map集合可以同时存入两个对象。key会保证唯一性。只要不断改变该key对应的值就可以了。)

4,在遍历字符数组进行存储的时候要判断,该字母是否已经存在于map集合。如果已存在。就取出它所对应的次数,并++.在次存入到集合中。

5,遍历该集合就可以得到结果。

 

(注意,如果只取字母的话,要进行字符'a'-'z'的判断。其他字符比如数字或者符号就没有必要存入map集合了。)

*/

 

import java.util.*;

import java.io.*;

class CountMaxNum

{

       private String s;

       private HashMap<Character,Integer> map;

       CountMaxNum( String s )

       {

              this.s=s;

              map=new HashMap<Character,Integer>();

       }

      

       public void start()

       {

              inputSet();

              printString();

       }

      

       /*

       利用了map容器"不允许重复元素""键和值一一对应"的特点

       1.遍历字符串中的每个元素

       2.检查遍历到的元素是否已在map容器中

       3.如果元素不在容器中,初始化出现次数为1,把"元素,出现次数"放入容器中

       4.如果元素在容器中,把出现的次数取出来加1后再把"元素,出现次数"放入容器中

       */

       private void inputSet()

       {

              for( int i=0; i<s.length(); i++ )

              {

                     if( (s.charAt(i)>='a'&&s.charAt(i)<='z')

                            ||(s.charAt(i)>='A'&&s.charAt(i)<='Z') )

                     {

                            //如果元素在容器中,把出现的次数取出来加1后再把"元素,出现次数"放入容器中

                            if( map.containsKey( s.charAt(i) ))

                            {

                                   map.put( s.charAt(i), map.get( s.charAt(i) )+1 );

                            }

                            else //元素不在容器中,初始化出现次数为1,把"元素,出现次数"放入容器中

                            {

                                   map.put( s.charAt(i),1 );

                            }

                     }

              }

       }

      

       private void printString()

       {

              Iterator<Map.Entry<Character,Integer>> iter=map.entrySet().iterator();

              while( iter.hasNext() )

              {

                     Map.Entry<Character,Integer> i=iter.next();

                     System.out.println( i.getKey()+":"+i.getValue() );

              }

       }

}

 

class Demo

{

       public static void main(String agrs[])

       {

              new CountMaxNum( "abcdekka27qoq" ).start();        

       }

}

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java小程序(3) 的相关文章

  • 10.app后端选择什么开发语言

    在qq上 xff0c 经常看到有创业团队的创始人一直都招不到技术人员 xff0c 除了项目的因素外 xff0c 很大的原因就是所需要掌握的开发语言偏门 通过阅读本文 xff0c 详细了解选择开发语言的核心原则 xff0c 使各位心里对开发语
  • 11.如何快速进门新技术

    在app后端的工作中 xff0c 经常会接触到新的技术 作为一名后端人员 xff0c 面对开发的压力 xff0c 快速地入门新的技术 xff0c 融入到项目当中 xff0c 这已经成了一个后端人员的必备技能 在这篇文章 xff0c 根据总结
  • 12.app后端如何选择合适的数据库产品

    app后端的开发中 xff0c 经常要面临的一个问题是 xff1a 数据放在哪里 mysql xff1f redis xff1f mongodb xff1f 现在有这么多优秀的开源数据库产品 xff0c 怎么根据业务场景来选择合适的数据 常
  • 13.app后端为什么要用到消息队列

    很多没有实际项目经验的小伙伴 xff0c 对消息队列系统非常陌生 xff0c 看着很多架构的介绍中 xff0c 都提到消息队列 但是 xff0c 不知道为什么要用消息队列 xff1f 什么是消息队列 xff1f 常见的消息队列产品有哪些 x
  • 14.app后端如何设计api

    app和后端的交互 xff0c 一般都是通过后端提供的api实现 api的设计 xff0c 估计很多刚进入app后端的小伙伴会一无头绪 xff0c 不知道怎么入门 下面根据自己3年的app后端经验 xff0c 总结出下几个api设计原则 x
  • 15.app后端怎么设计用户登录方案

    在很多app中 xff0c 都需要用户的登录操作 登录 xff0c 就需要用到用户名和密码 为了安全起见 xff0c 暴露明文密码的次数越少越好 怎么能最大程度避免泄露用户的密码呢 xff1f 在登录后 xff0c app后端怎么去验证和维
  • Struts 1 中DispatcherAction类原理浅析

    文章标题 Struts 1 中 DispatcherAction 类原理浅析 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xf
  • Python 高级编程技巧 第二讲 内置不可变类型并修改其实例化行为、slots属性、contextmanager上下文管理器、创建可管理对象属性、类比较操作

    第二讲 一 如何派生内置不可变类型并修改其实例化行为 这里有一道练习题 xff0c 我们想定义一个新类型的元组 xff0c 对于传入的可迭代对象 xff0c 我们只保留其中int类型并且值还要大于0 或许我们可以这么写 xff0c 尝试一下
  • 16.app后端如何保证通讯安全--url签名

    app和后端的通讯过程中 xff0c api请求有可能被别人截取或不小心泄露 那么 xff0c 怎么保证api请求的安全呢 xff1f 在这篇文章中 xff0c 介绍一种常见的保证api请求安全的做法 url签名 1 url签名详解 在前一
  • 17.app后端如何保证通讯安全--aes对称加密

    在上文 16 app后端如何保证通讯安全 url签名 提到 xff0c url签名有两个缺点 xff0c 这两个缺点 xff0c 如果使用对称加密方法的话 xff0c 则完全可以避免这两个缺点 在本文中 xff0c 会介绍对称加密的具体原理
  • 18.app后端如何实现LBS

    移动互联网 xff0c 除了一直在线这个特点外 xff0c 还有一个重要特点 xff0c 能定位到手机的位置 查找附近的人 附近的餐馆等服务 xff0c 以及大量的o2o应用 都需要使用LBS Location Based Services
  • 19.最省钱的app发短信方法

    在创业团队中 xff0c 一个重要的原则是能省就省 xff0c 该花就花 xff0c 把银子用在刀刃上 现在的app xff0c 为了获取用户的社交关系 xff0c 需要用户的手机号注册 用手机号注册就涉及到一个发送短信验证码的问题 xff
  • 20.如何从app业务逻辑提炼api接口

    在app后端的工作中 xff0c 设计api是一个很考验设计能力的工作 在项目的初始阶段 xff0c 只知道具体的业务逻辑 xff0c 那怎么把业务逻辑抽象和提炼 xff0c 设计出api呢 xff1f 通过阅读本文 xff0c 可解答以上
  • 21.app后端如何高效更新内容

    在app的主页或通知栏 xff0c 经常需要通过api取最新的数据 那么 xff0c 怎么在这部分上做优化 xff0c 使获取内容的效率更高呢 xff1f 在本文中 xff0c 通过推拉和增量更新 xff0c 实现了一种高效获取数据的策略
  • 22.在创业公司中的成长

    在 app后端 qq群中 xff0c 经常被问到的一个问题 xff1a 怎么设计一个应付高并发的架构 诚然 xff0c 设计一个能应付百万流量的高并发架构 xff0c 是很令人兴奋的技术挑战 xff0c 但在创业公司中的成长 xff0c 难
  • 23.app后端如何架设文件系统

    现在app展现内容的形式多种多样的 xff0c 有文字 xff0c 图片 xff0c 声音 xff0c 视频等等 xff0c 其中文件占了一个很大的比重 随着app不断运营 xff0c 文件会越来越多 xff0c 占用的磁盘空间也不断增大
  • 24.从公众号筹集10万股份学到的商业化思维

    1 忽然间看到了卖公众号的股份的玩法 昨天 xff0c 在公众号 老鹰说 id joeytalks 看到了他要弄一个新的玩法 xff0c 卖公众号的股份 xff0c 熟人1000块一股 xff0c 陌生人2000块一股 当时不以为然 xff
  • 25.创业真的需要app吗?真的需要外包吗?

    两个星期前 xff0c 一名亲戚的朋友打算投入自己的二十多万元去搞个摄影社交app xff0c 问我有没有靠谱的外包推荐 xff0c 我赶紧劝住他 xff0c 现在app的成本已经非常高了 xff0c 初期的研发就要十几万 xff0c 加上
  • HarmonyOS鸿蒙的测试体验

    HarmonyOS 2 0手机开发者Beta公测招募 xff0c 申请开发者账号 xff0c 报名 xff0c 就可以抢先体验 除了抢先体验 xff0c 使用真机测试外 xff0c 使用模拟器也可以尝试体验 那测试人员可以使用HVD和Clo
  • 单点登录 Ucenter 分析

    原文 xff1a http blog csdn net ebw123 article details 9417231 首先我们先来了解下 Ucenter登录步骤 1 用户登录discuz xff0c 通过logging php文件中的函数u

随机推荐

  • 当Ucenter和应用通信失败

    http blog sina com cn s blog 775f158f010135uz html 失败是常见的 对于初次接触Ucenter的人来讲 xff0c 添加一个自己的应用最头疼的就是发现通信失败 如果要解决这个问题 xff0c
  • 26.app后端怎么架设推送服务

    推送服务已经是app的标配了 架设推送服务 xff0c 除了可以使用第三方服务商外 xff0c 也有大量的开源技术可以选择 现在推送主要分两块 xff0c android推送和ios推送 xff0c 在下面分别论述 xff1a 1 Andr
  • 27.app后端搭建聊天服务器的经历

    现在 xff0c 聊天功能已经成了社交app的标配了 但是 xff0c 众多web开发出生的程序员对聊天相关的服务的不了解 xff0c 带来了很多开发上的困扰 在这篇文章中 xff0c 根据下面3个方面 xff0c 谈谈聊天服务 1 聊天服
  • 29.满大街创业团队的年代,一不小心就被忽悠

    长期呆在创业团队中 xff0c 我人品不咋的 xff0c 遇到过各种坑人的项目和团队 下面讲讲3件坑人的事情 1 不靠谱的项目 在第二个创业项目失败后一个星期 xff0c 以前的UI andy忽然找上我 xff0c 有个老板想投资个项目 x
  • (转)cookie和session机制之间的区别与联系

    出处为中国JAVA手机网 lt www cnjm net gt http www cnjm net tech article1113 html 具体来说cookie机制采用的是在客户端保持状态的方案 它是在用户端的会话状态的存贮机制 xff
  • 30.因为绘画,我在豆瓣上认识了老婆

    导读 xff1a 这篇文章的上半部分 xff0c 是我2011年在豆瓣上发表的 五天学会绘画 书评 xff0c 我和老婆就相识于这个书评 后记部分 xff0c 是对绘画 xff0c 和用互联网方法找女友的一些思考 五天学会绘画 xff0c
  • 对太极拳中的“势”有所领悟

    文章标题 对太极拳中的 势 有所领悟 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 今天帮一个亲戚搬杂物 xff0c 从三楼的杂物房搬到一楼的花园 开始领悟 势 是搬一个很重
  • 本人写的Android上RSS阅读器简单介绍

    文章标题 本人写的 Android 上 RSS 阅读器简单介绍 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 个人博客 http blog csdn net newjueqi
  • 整合 ucenter 注册自动激活

    http my oschina net banbo blog 311691 应用整合 UCenter xff0c 同步注册到 Discuz 的用户 xff0c 在 Discuz 登录时得手动激活 xff0c 用户体验很不好 xff0c 不过
  • switch case语句用法详解

    switch 开关 的意思 xff0c 是一种 选择 语句 xff0c 它用法非常简单 switch 是多分支选择语句 说得通俗点 xff0c 多分支就是多个 if语句的组合 从功能上说 xff0c switch 语句和 if 语句完全可以
  • 32.APP后端处理表情的一些技巧

    app应用中文字夹带表情是个很常见的现象 甚至一些40多岁的大叔级用户 xff0c 也喜欢在自己的昵称中夹带表情 xff0c 在产品运营后发现这个现象 xff0c 彻底颠覆了我的世界观 在后台处理表情的时间 xff0c 我遇到过下面3个问题
  • 33.APP后端处理视频的方案

    在当前的app应用中 xff0c 到处都能看到视频的身影 xff0c 例如 xff0c 在社交类的app上 xff0c 用户可以拍摄属于自己的小视频 xff0c 并发布到相应得栏目 xff0c 增加和好友们互动的机会 后台常见的视频处理有以
  • 34.如何获取app(apk和ipa)中的资源

    移动互联网中 xff0c 主要的两个平台是android和ios xff0c android上文件的安装包是后缀名为apk的文件 xff0c ios上文件的安装包是后缀名为ipa的文件 xff0c 在本文分析一下这两种文件的特点 xff0c
  • 35.app后端搜索入门

    现在人们的网络生活已经离不开搜索了 xff0c 遇到不懂的问题 xff0c 想知道的事情 xff0c 搜索一下 xff0c 就知道答案 在app中 xff0c 最常见的搜索情景就是搜索用户 只有几百 xff0c 几千的用户量时 xff0c
  • 36.如何使用定时任务

    lt span style 61 34 font family Arial Helvetica sans serif background color rgb 255 255 255 34 gt 在app后台开发中 xff0c 经常需要执行
  • goroutine背后的系统知识

    http www sizeofvoid net goroutine under the hood o语言从诞生到普及已经三年了 xff0c 先行者大都是Web开发的背景 xff0c 也有了一些普及型的书籍 xff0c 可系统开发背景的人在学
  • 37.创业团队不是天堂

    在媒体的报导中 xff0c 创业公司一直都是充满情怀的 xff1a 宽松的工作环境 xff0c 不差的薪水 xff0c 不断高涨的融资额 xff0c 吃不完的零食和喝不完的饮料 xff0c 一群年轻人为了实现自己的梦想而一起奋斗 种种诱人的
  • java小程序(1)

    文章标题 java 小程序 xff08 1 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出
  • java小程序(2)

    文章标题 java 小程序 xff08 2 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出
  • java小程序(3)

    文章标题 java 小程序 xff08 3 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出